home *** CD-ROM | disk | FTP | other *** search
- {======================================================================}
- UNIT LOADFILE;
-
- INTERFACE
- USES IOSTUFF,CRT;
- PROCEDURE Load_ASCII(AFile : AnyStr);
- PROCEDURE Load_MEM(MFile : AnyStr);
- PROCEDURE Load_PAK(PFile:AnyStr);
-
- IMPLEMENTATION
- VAR
- TempStr : AnyStr;
-
- {======================================================================}
- PROCEDURE Load_ASCII(AFile : AnyStr);
- { }
- { This routine loads an ASCII format file as created }
- { by BOX onto the screen. }
- { }
-
- VAR
- FilevarA : Text;
- II : Integer;
-
- BEGIN
- Assign(FilevarA,AFile);
- {$I-} Reset(FilevarA); {$I+}
- If IOresult = 0 then {found good file name}
- Begin
- ClrScr;
- For II := 1 to 25 do
- Begin
- Readln(FilevarA,TempStr);
- GoToXY(1,II);
- Write(TempStr);
- End;
- Close(FilevarA);
- End
-
- Else {couldn't find file }
- Begin
- GoToXY(1,24);
- Write('ERROR - Could not find file');
- End;
-
- END; {Load_ASCII}
-
- {======================================================================}
- PROCEDURE Load_MEM(MFile : AnyStr);
- { }
- { This routine loads a memory format file as created }
- { by BOX directly into the video buffer. Since a }
- { memory format file is the same shape as the video }
- { buffer, all that needs to be done is to move the }
- { screen into the buffer with MoveToScreen in IOSTUFF.}
- { }
-
- VAR
- FilevarM : File;
- LoadScr : Screen;
-
- BEGIN
- Assign(FilevarM,MFile);
- {$I-} Reset(FilevarM,4000); {$I+}
- If IOresult = 0 then {found good file name}
- Begin
- BlockRead(FilevarM,LoadScr,1);
- MoveToScreen(LoadScr,Video^,4000);
- Close(FilevarM);
- End
- Else {couldn't find file }
- Begin
- GoToXY(1,24);
- Write('ERROR - Could not find file ',MFile);
- End;
- END; {Load_MEM}
-
- {======================================================================}
- PROCEDURE Load_PAK(PFile:AnyStr);
- { }
- { This procedure loads a Packed Format screen created }
- { by BOX. The Packed format utilizes a run-length }
- { encoding scheme that must be unpacked. Each record }
- { in a Packed Format file is three bytes long. Byte 1 }
- { is the run length, i.e. the number of characters to }
- { repeat. Byte 2 is the character to repeat and }
- { byte 3 is the attribute of the character. }
- { }
- TYPE
- Pack = Record
- PackNm : Byte; {run length}
- PackCh : Char; {repeated character}
- PackAt : Byte; {repeated attribute}
- End;
-
- VAR
- FilevarM : File;
- LoadScr : Screen;
- Packbuf : Array[1..2000] of Pack;
- II,JJ,Sloc,SX,SY,NumRec : Integer;
-
- BEGIN
- Sloc := 1; {SLoc is location on screen}
- Assign(FilevarM,PFile);
- {$I-} Reset(FilevarM); {$I+}
- If IOresult = 0 then {found good file name}
- Begin
- BlockRead(FilevarM,PackBuf,48,NumRec);
- JJ := 0;
- While Sloc < 2001 do
- Begin
- JJ := JJ + 1;
- For II := 1 to Packbuf[JJ].PackNm do
- Begin
- SY := (SLoc-1) div 80 + 1; {row}
- SX := (SLoc-1) mod 80 + 1; {column}
- LoadScr[SY,SX].ScrCh := Packbuf[JJ].PackCh;
- LoadScr[SY,SX].ScrAt := Packbuf[JJ].PackAt;
- SLoc := SLoc + 1;
- End;
- End;
- MoveToScreen(LoadScr,Video^,4000);
- Close(FilevarM);
- End
- Else {couldn't find file}
- Begin
- GoToXY(1,24);
- Write('ERROR - Could not find file');
- End;
- END;
-
- END.